/**
 * (C)2012 Exlu Corporation. All rights reserved.
 * 注意事項   :
 */
package cn.exlu.wea.field.validator;

/**
 * 空字符串校验类
 * @author Mark 
 * @version 1.0.1.1
 * @CreateTime 2012-12-10
 */
public final class LpValidatorStringUtil {
    
    /**
     * 字符串是值含有半角空白字符或Null判定
     *  判定方式：""," "（半角空白）," "（全角空白）或者是Null
     * 
     * @param str 输入字段
     * @return true：是 false: 否
     */
    public static boolean isSpaceOrNull(String str) {
        if(str==null||isSpace(str)){
            return true;
        }
        return false;
    }

    /**
     * 字符串是空白或Null判定
     * 判定方式：""或者是Null
     * 
     * @param str 输入字段
     * @return true：是 false: 否
     */
    public static boolean isEmptyOrNull(String str) {
        if(str==null||"".equals(str)){
            return true;
        }
        return false;
    }
    
    /**
     * 返回字符串的副本，忽略前导空白和尾部空白（包括全角, 半角）
     * @param str   输入字段
     * @return 此字符串移除了前导和尾部空白的副本，如果没有前导和尾部空白，则返回此字符串。
     */
    public static String trimExtend(String str){
        int st=0;
        int len=str.length();
        char[] cha=str.toCharArray();
        
        while(st<len&&(cha[st]=='\u3000'||cha[st]<='\u0020')){
            st++;
        }
        while(st<len&&(cha[len-1]=='\u3000'||cha[len-1]<='\u0020')){
            len--;
        }
        return st>0?str.substring(st,len):str;
        
    }
    
    /**
     * 字符串是只含有空白字符或空字符的判定
     * @param str 验证的字符串
     * @return true 是 false 否
     */
    private static boolean isSpace(String str){
        int st=0;
        int len=str.length();
        char[] cha=str.toCharArray();
        while(st<len){
            if(cha[st]!='\u3000'&&cha[st]>'\u0020'){
                return false;
            }
            st++;
        }
        return true;
    }
    
}
